home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / muds / pennmush.000 / pennmush-1.50-p8-linux.tar / pennmush / mem_check.c < prev    next >
C/C++ Source or Header  |  1992-11-19  |  1KB  |  79 lines

  1. #include "config.h"
  2.  
  3. #ifdef MEM_CHECK
  4.  
  5. #include "externs.h"
  6. #include "mem_check.h"
  7.  
  8. MEM *my_check = NULL;
  9.  
  10. void add_check(ref)
  11.     char *ref;
  12. {
  13.   MEM *loop;
  14.  
  15.   for(loop = my_check; loop; loop = loop->next) {
  16.     if(!strcasecmp(ref, loop->ref_name)) {
  17.       loop->ref_count++;
  18.       return;
  19.     }
  20.   }
  21.   loop = (MEM *) malloc(sizeof(MEM));
  22.   loop->ref_name = ref;
  23.   loop->ref_count = 1;
  24.   loop->next = my_check;
  25.   my_check = loop;
  26.   add_check("mem_check");
  27.   return;
  28. }
  29.  
  30. void del_check(ref)
  31.   char *ref;
  32. {
  33.   MEM *loop;
  34.  
  35.   for(loop = my_check; loop; loop = loop->next) {
  36.     if(!strcasecmp(loop->ref_name, ref)) {
  37.       loop->ref_count--;
  38.       if(!loop->ref_count) {
  39.     rebuild_check();
  40.     del_check("mem_check");
  41.       }
  42.       return;
  43.     }
  44.   }
  45.   fprintf(stderr,
  46.           "ERROR: Tried deleteing a check that was never added! :%s\n", ref);
  47. }
  48.  
  49. void rebuild_check()
  50. {
  51.   MEM *point, *next, *new = NULL;
  52.   
  53.   point = my_check;
  54.   while (point) {
  55.     next = point->next;
  56.     if(point->ref_count) {
  57.       point->next = new;
  58.       new = point;
  59.     } else {
  60.       free((char *)point);
  61.     }
  62.     point = next;
  63.   }
  64.   my_check = new;
  65. }
  66.  
  67. void list_mem_check(player)
  68.     dbref player;
  69. {
  70.  
  71.   MEM *loop;
  72.  
  73.   for(loop = my_check; loop; loop = loop->next) {
  74.     notify(player, tprintf("%s : %d", loop->ref_name, loop->ref_count));
  75.   }
  76. }
  77.  
  78. #endif /* MEM_CHECK */
  79.